package com.hzw.saas.api.user;

import com.hzw.saas.api.user.bo.UserWeTripartiteBO;
import com.hzw.saas.common.config.auth.param.PlatformParam;
import com.hzw.saas.common.config.auth.param.WeChatTokenParam;
import com.hzw.saas.common.config.auth.param.WeChatUserInfoParam;

import java.util.List;

public interface IUserTripartiteService {


    WeChatTokenParam getWechatByCode(String code,String type);

    /**
     * 查询微信数据
     * @param accessToken
     * @param openId
     * @param unionId
     * @param type
     * @return
     */
    WeChatUserInfoParam getWeChatUserInfoParam(String accessToken, String openId,String unionId,String type);

    /**
     * 根据open id查询指定用户
     * @param openId
     * @return
     */
    List<UserWeTripartiteBO> getByUnionIdAndOpenId(String unionId, String openId, String module);

    void saveOne(UserWeTripartiteBO userWeTripartiteBO);

    void updateById(UserWeTripartiteBO byUnionIdAndOpenId);

    List<UserWeTripartiteBO> getByTypeAndUserId(String dataByCode, String user);

    void deleteOne(String pid);

    List<PlatformParam> getByUserId(String userId);

    List<String> getIdsByUserIdLikeModule(String user, String substring);

    void deleteBatch(List<String> idsByUserIdLikeModule);

    /**
     * 根据唯一表示查询用户数据
     * @param unionId
     * @return
     */
    List<UserWeTripartiteBO> getByUnionId(String unionId);

    /**
     * 根据用户id和类型判断账号是否被制定平台绑定
     * @param userId
     * @param type
     * @return
     */
    boolean ifByUserIdLikeType(String userId, String type);

    /**
     * 根据用户id解绑
     * @param userId
     */
    void unBoundByUserId(String userId);
}
